package com.cskaoyan.javase.array._5operation._0traverse;

import java.util.Arrays;

/**
 * 数组的遍历,除了使用普通for循环以外
 * 还可以使用增强for循环
 * 增强for循环的语法:
 * for(数据类型 变量名 : 要遍历的数组或者集合){
 *      System.out.println(变量名);
 * }
 * 解释:
 *      增强for当中的数据类型是容器中元素的数据类型
 *      语法中的变量名,表示容器中的每一个元素
 *      所以增强for是直接遍历容器的元素
 *      而普通for是遍历数组的下标
 *
 *
 * 增强for循环的优点:
 *      1.增强for循环遍历元素的效率比普通for更高
 *      2.增强for循环语法更简单,配合快捷键"iter"使用,也会更方便
 *      3.增强for循环直接遍历元素,直接操作元素
 *
 * 缺点:
 *      增强for也叫foreach,它是一种容器遍历的迭代器,更常用于迭代和遍历集合容器
 *      它最大的缺点是在遍历过程中,无法修改容器中元素的取值
 *      所以增强for只能用于遍历和访问元素,不能用于修改元素
 *
 * 综上,增强for和普通for在数组中使用时,
 *      如果有以下需求,就必须用普通for:
 *          1.需要修改元素取值
 *          2.需要使用数组下标
 *      反之,如无上述需求,建议选择增强for循环,因为它更简洁,用起来更方便.
 *
 *
 * @since 15:46
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        for (int element : arr) {
            System.out.println(element);
        }

        // 增强for循环,快捷键iter
        for (int element : arr) {
            System.out.println(element);
        }

        String[] arr2 = {"123", "456", "789"};
        for (String str : arr2) {
            System.out.println(str);
        }

        double[] arr3 = {0.1, 0.2, 0.3};
        for (double value : arr3) {
            value = 666;
        }
        System.out.println(Arrays.toString(arr3));

        for (int i = 0; i < arr3.length; i++) {
            arr3[i] = 666;
        }
        System.out.println(Arrays.toString(arr3));
    }
}
